package com.example.onlinemusic.config;

import com.example.onlinemusic.tools.Constant;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * 会话拦截器：登录允许访问，未登录不允许访问
 */
public class LoginInterceptor implements HandlerInterceptor {

    /**
     * 再Controller控制器的请求映射方法执行前，调用前置处理
     * @param request 注入的HttpServletRequest对象
     * @param response 注入的HttpServletResponse对象
     * @param handler 注入的处理器
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
                             Object handler) throws Exception {

        // 获取session对象
        HttpSession httpSession = request.getSession(false);
        // session不为空，且session保存有用户信息，说明已登录
        if(httpSession != null && httpSession.getAttribute(Constant.USERINFO_SESSION_KEY) != null) {
            //System.out.println("没有登录！");
            // 返回true表示允许继续执行Controller的请求映射方法
            return true;
        }
        // 返回false表示不执行Controller的请求映射方法，直接返回响应
        return false;
    }
}
